1 REM VIDEO PHILE V12 2 REM VIDEO TAPE LIBRARY DATABASE WITH INDICES 3 REM BY MICHAEL REICH 9/07/86 4 REM USING RELATIVE FILE - USE 'CREATE' PROGRAM TO START REL.FILE 5 REM ******************* 10 POKE53280,0:POKE53281,0:C1$=CHR$(5) :C2$=CHR$(152) 15 UPTIME=(8*4096)+4 20 PRINT"[147]"CHR$(142)CHR$(8) 25 SP$=" ":REM LEN 37 30 NF=10:N=100:REM # FIELDS AND RECORDS- ALSO SEE LINE 20020 40 DIM TEMP$(NF),KK$(NF),S(NF),L(NF),RC$(4),IA$(N),IB$(N),IC$(N),K$(N) 50 NR=0: LS$="[171][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][179]" 52 LP$="*******************" 55 DIM Q1$(N),M%(N),S%(20):REM *** USED IN SORT *** 60 FORI=1TONF:READF$(I),S(I),L(I):NEXT 70 DATA TITLE,1,20,STAR,21,20,CO-STAR,41,20 80 DATA START,61,4,END,65,4,SPEED,69,2,TIME,71,3,YEAR,74,4,TYPE,78,5 90 DATA TAPE #,83,3 170 GOSUB 8000: GOSUB 9800 175 GOSUB 200: GOTO 800 180 POKE781,X:POKE782,0:GOTO195: REM LINE SELECT 185 POKE781,21:POKE782,0:GOTO195 190 POKE781,PEEK(214):POKE782,Y: REM TAB 195 POKE783,0:SYS65520:RETURN 196 REM ********* 197 REM READ INDEX 198 REM ********* 199 : 200 GOSUB470: REM *** INIT DISK *** 205 NR=0: IF MO=4 THEN PRINT SC$ 210 OPEN 2,8,2,"0:VIDEO.INDEX,S,R": I=0 220 GOSUB 400: REM *** CK DISK ERROR *** 225 IF ER=0 THEN 250 230 GOSUB640: REM *** CLOSE ON NO INDEX *** 235 RETURN 250 X=17: GOSUB 180: PRINT"[150] READING INDEX[157][157][157][157][157][157][157][157][157][157][157][157][157]"; 252 INPUT#2,NR 255 FOR I=1 TO NR: INPUT#2,IA$(I): NEXT 260 FOR I=1 TO NR: INPUT#2,IB$(I): NEXT 270 FOR I=1 TO NR: INPUT#2,IC$(I): NEXT 340 GOSUB 460 350 GOSUB 370: PRINT" ": RETURN 370 IN=150 380 T=TI+IN 385 IF TI0THENPRINTER,ER$ 440 RETURN 450 CLOSE15:RETURN 460 GOSUB430:GOSUB450:RETURN: REM CLOSE ALL FILES 470 OPEN15,8,15,"I0":RETURN 500 REM ********* 502 REM WRITE INDEX 504 REM ********* 510 IFNR<1THENPRINT"NO RECORDS IN FILE TO SAVE":GOSUB370:GOSUB370:GOTO800 520 GOSUB470:REM OPEN COMMAND CHANNEL 530 GOSUB185:PRINT"SCRATCHING OLD INDEX" :PRINT#15,"S0:VIDEO.INDEX" 560 OPEN2,8,2,"0:VIDEO.INDEX,S,W": GOSUB400:IFER=0THENGOTO570 565 GOSUB430:GOSUB450:STOP 570 GOSUB22300:GOSUB185:PRINT"WRITING INDEX":PRINT#2,NR 580 FORI=1TONR:PRINT#2,IA$(I):NEXT: FORI=1TONR:PRINT#2,IB$(I):NEXT 590 FORI=1TONR:PRINT#2,IC$(I):NEXT 600 GOSUB460:RETURN 620 PRINTTAB(14)"[145] [150] INVALID  [157][157][157][157][157][157][157][157][157][157][157][146]";: GOSUB 370: RETURN 630 : 636 REM ***************** 637 REM CLOSE ON NO INDEX 638 REM ***************** 639 : 640 CLOSE 2: CLOSE 15 650 EM$="NO INDEX ON DISK" 660 IF ER<>62 THEN EM$="DISK UNUSABLE" 670 X=17: GOSUB 180 680 PRINT EM$ 690 RETURN 796 REM ********* 797 REM MENU 798 REM ********* 799 : 800 X=6: GOSUB 180 805 PRINT"[150]>> MAIN MENU [150]<<": PRINT 810 PRINT "[150] 1[150]- DISPLAY" 820 PRINT "[150] 2[150]- EDIT" 830 PRINT "[150] 3[150]- ADD TO FILE" 840 PRINT "[150] 4[150]- PRINTER" 845 PRINT "[150] OPTIONS" 850 PRINT "[150] 5[150]- CREATE FILE": PRINT 860 PRINT "[150] F8[150]- UPTIME" 865 X=21: GOSUB 180 870 PRINT "[153] THERE ARE ";NR;"[157][153] RECORDS AVAILABLE." 875 PRINT" " 880 GET K$: IF K$="" THEN 880 882 IF K$=CHR$(140) THEN SYS UPTIME 884 K=VAL(K$): IF (K<1) OR (K>5) THEN 880 886 MO=K 890 ON MO GOSUB 2000,5000,4000,7000,20000 895 GOTO800 935 REM SCREEN DISPLAYS USING C-64 GRAPHICS CHARS. 940 Y=21: N$=" RAMBO ": R$="[146]": D$="": GOSUB 8500 945 FOR X=1TOZZ: NEXT 950 Y=23: N$="STAR WARS": R$="": D$="": GOSUB 8500 955 FOR X=1TOZZ: NEXT 960 Y=25: N$=" TOP GUN ": R$="[146]": D$="": GOSUB 8500 970 RETURN 1000 REM ********* 1002 REM SORT INDICES 1004 REM ********* 1008 : 1009 TI$="000000":IFNR<2THENRETURN 1010 REM IA$ ARRAY 1015 IFMO=2THENIFP1=0THENGOTO1100 1020 FORQ=1TONR:Q1$(Q)=IA$(Q):NEXT: SO=1:GOSUB55000 1030 FORQ=1TONR:IA$(Q)=Q1$(Q):NEXT 1100 : 1110 REM IB$ ARRAY 1115 IFMO=2THENIFP2=0THENGOTO1200 1120 FORQ=1TONR:Q1$(Q)=IB$(Q):NEXT: SO=2:GOSUB55000 1130 FORQ=1TONR:IB$(Q)=Q1$(Q):NEXT 1200 : 1210 REM IC$ ARRAY 1215 IFMO=2THENIFP3=0THENGOTO1300 1220 FORQ=1TONR:Q1$(Q)=IC$(Q):NEXT: SO=1:GOSUB55000 1230 FORQ=1TONR:IC$(Q)=Q1$(Q):NEXT 1300 RETURN 1750 : 1770 GOSUB1790:PRINTC1$MID$(TI$,4,1);":";RIGHT$(TI$,2):RETURN 1780 GOSUB1790:PRINTC2$MID$(TI$,4,1);":";RIGHT$(TI$,2)C1$:RETURN 1790 GOSUB185:PRINT"SORTING INDEX...WAIT ";:RETURN 1996 REM ********* 1997 REM DISPLAY 1998 REM ********* 1999 : 2000 IF NR<>0 THEN 2010 2002 X=21: GOSUB 180: PRINT"[153]  NO RECORDS TO DISPLAY! [153] " 2004 FOR X=1TO 1750: NEXT 2006 RETURN 2010 W=0: PRINT"[147]": GOSUB 2620: Y=11 2020 PRINT: PRINT "SELECT BY: [150]S[146][158]TAR": GOSUB 190: PRINT "[150]M[146][158]OVIE TITLE" 2030 GOSUB 190: PRINT "[150]T[146][158]APE #": GOSUB 190: PRINT "[150]R[146][158]ECORD #" 2035 GOSUB 190: PRINT "[150]Q[146][158]UIT": PRINT 2040 X=16:GOSUB180 2045 PRINT "[155] <<- ENTER CHOICE ->>[146]" 2050 GET S$: IF S$="" THEN 2050 2054 T$="NAME RECORD #" 2055 IF S$="Q" THEN GOSUB 8000: RETURN 2060 IF S$="S" THEN PRINT"[147]": GOSUB 2330: GOTO 2200 2070 IF S$="M" THEN PRINT"[147]": GOSUB 2100: GOTO 2200 2080 IF S$="T" THEN PRINT"[147]": GOSUB 2430: GOTO 2200 2082 IF S$<>"R" THEN 2050 2084 GOSUB 2700: REM *** GET RECORD # *** 2085 IF (S>0) AND (S<=NR) THEN CH=S: GOTO 2235 2086 PRINT"[157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157] ": GOTO 2050 2090 X=16: GOSUB180: PRINT "  [150] INVALID  [146] " 2095 GOSUB 370: GOTO 2040 2100 T$="TITLE RECORD #": GOSUB 2600 2110 W=1: PRINT"[158]";: FOR I=1 TO NR: PRINT LEFT$(IA$(I),20)" "MID$(IA$(I),21) 2115 GOSUB6600:NEXT:POKE198,0:RETURN 2200 PRINTSPC(8)"[155]ENTER REC. # TO DISPLAY" 2210 PRINT:PRINTSPC(12)"[155]OR TO EXIT[157][157][157][157][157][157][157][157][157][157][157][157][157][157][157]";: K=0: EX=0 2220 GOSUB 9500: REM *** GET REC # FROM KBD *** 2225 IF EX=1 THEN GOSUB 8000: RETURN 2230 CH=VAL(T$) 2235 GOSUB 3000 2240 GOTO2000 2330 PRINTSC$:GOSUB2600 2340 W=1: PRINT"[158]";: FORI=1TONR:PRINTLEFT$(IB$(I),20)" "MID$(IB$(I),21) 2345 GOSUB6600:NEXT:POKE198,0:RETURN 2430 T$="TAPE # RECORD #": PRINTSC$:GOSUB2600 2440 W=1: PRINT"[158]";: FORI=1TONR:PRINTLEFT$(IC$(I),L(10));TAB(20)MID$(IC$(I),4) 2450 GOSUB6600:NEXT:POKE198,0:RETURN 2600 GOSUB2620:PRINT"[154]"T$ 2610 PRINT"******"TAB(20)"*******": PRINT: RETURN 2620 PRINT "[155]THERE ARE "NR"[157][146][155] RECORDS IN FILE": PRINT: RETURN 2700 PRINT "[145][145][145][145][145][145][155]ENTER RECORD #:"; 2710 GOSUB 9500: REM *** GET KBD INPUT *** 2720 S=VAL(T$): RETURN 3000 REM ********* 3002 REM DISPLAY RECORD 3004 REM ********* 3010 PRINTC1$"[147]DISPLAY RECORD #"CH: PRINTLS$:R1$="":R2$="" 3020 RC=CH:GOSUB22000:RC$=R1$+R2$ 3040 X=4: GOSUB 180 3042 FOR Z=1 TO NF: IF Z=3 THEN PRINT 3045 KK$(Z)=MID$(RC$,S(Z),L(Z)): REM *** TEMPORARILY SAVES FIELDS *** 3050 PRINT"[153]"F$(Z);": [155]";TAB(12);KK$(Z) 3060 NEXT: PRINT: IF MO<>1 THEN RETURN 3070 PRINT: PRINT"[155] PRESS ANY KEY TO CONTINUE " 3080 POKE 198,0: WAIT 198,1: POKE 198,0: RETURN 3996 REM ********** 3997 REM ADD RECORD 3998 REM ********** 3999 : 4000 PRINT"[147] [159] ADD RECORD  ": CR=NR+1: RC$="": PRINT 4020 PRINT "[155] ENTRIES FOR RECORD NUMBER"CR":" 4030 PRINT: PRINT: FOR I=1 TO NF: TEMP$(I)="" 4040 IF I<>10 THEN 4046 4042 PRINT"[155]TAPE #? 000[157][157][157][150]"; 4044 GOSUB 9000: IF T$="" THEN TEMP$(I)="000": GOTO 4055 4045 GOTO 4050 4046 PRINT"[155]"F$(I)"?" 4048 PRINT"[145][150]";: GOSUB 9000: IF T$="" THEN GOTO 4048 4050 TEMP$(I)=LEFT$(T$+SP$,L(I)) 4055 RC$=RC$+TEMP$(I): NEXT: PRINT 4060 PRINT"[147]": PRINT"[147] [159] ADD RECORD  ": PRINT 4065 GOSUB 3040: PRINT 4070 PRINT" OK? < Y OR N >[157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157]"; 4080 GET V$: IF (V$<>"N") AND (V$<>"Y") THEN 4080 4090 IF V$="N" THEN RC$="": GOSUB 8000: RETURN 4100 PRINT" " 4110 NR=CR:R1$="":R2$="" 4120 IA$(NR)=TEMP$(1)+MID$(STR$(NR),2): IB$(NR)=TEMP$(2)+MID$(STR$(NR),2) 4130 IC$(NR)=TEMP$(10)+MID$(STR$(NR),2) 4140 FORI=1TO8:R1$=R1$+TEMP$(I):NEXT 4150 FORI=9TONF:R2$=R2$+TEMP$(I):NEXT 4155 REM WRITE RECORD TO REL.FILE & UPDATE INDEX 4160 GOSUB 21000: IF ER=70 THEN 4190 4165 GOSUB 1000: GOSUB 500 4170 PRINT"[145][158] ENTER ANOTHER RECORD?" 4180 GET K$: IF (K$<>"Y") AND (K$<>"N") THEN 4180 4185 IF K$="Y" THEN 4000 4190 GOSUB 8000: RETURN 4200 PRINT"[145]"SP$:PRINT"[145]";:RETURN 4996 REM ********* 4997 REM EDIT 4998 REM ********* 4999 : 5000 IF NR=0 THEN GOSUB 2002: RETURN 5010 CR$="":CR=0:GOSUB5900 5020 PRINT"[158]ENTER  RECORD [146] NUMBER TO EDIT OR": PRINT 5025 PRINT TAB(13) "[159]I[146][158]NDEX OR [159]Q[146][158]UIT": PRINT 5030 GET CR$: IF CR$="" THEN 5030 5031 IF CR$="I" OR CR$="Q" THEN 5040 5032 PRINTCHR$(13)SPC(5)"[155]ENTER RECORD #";CR$;: CT=1: T$=CR$: GOSUB 9510 5035 CR=VAL(T$) 5040 IF CR$="I" THEN GOSUB 6000: POKE198,0: GOTO 5000 5050 IF CR$="Q" THEN GOSUB 8000: RETURN 5060 IF (CR<1) OR (CR>NR) THEN PRINT: GOSUB 620: PRINT" [145]": GOTO 5030 5096 REM ******************************* 5097 REM DISPLAY SELECTED RECORD TO EDIT 5098 REM ******************************* 5099 : 5100 GOSUB 5900: RC=CR: GOSUB 22000: RC$=R1$+R2$ 5110 PRINT: GOSUB 3040: REM *** LINE 3050 SAVES TITLE, STAR AND TAPE# *** 5120 RC$="": X=4: GOSUB 180 5130 FOR I=1 TO NF: IF I=3 THEN PRINT 5140 PRINT TAB(10)"[150]?";: GOSUB 9000: REM *** GET INPUT (T$) FROM KBD *** 5142 IF T$="" THEN TEMP$(I)=KK$(I): GOTO 5150 5145 TEMP$(I)=LEFT$(T$+SP$,L(I)) 5150 RC$=RC$+TEMP$(I): NEXT 5152 PRINT: PRINT"[155] OK? < Y OR N >[157][157][157][157][157][157][157][157][157][157][157][157][157][157][157][157]"; 5155 GET K$: IF (K$<>"N") AND (K$<>"Y") THEN GOTO 5155 5160 IF K$="N" THEN 5000 5162 PRINT" " 5165 R1$="": R2$="": FOR Z=1 TO 8 5170 R1$=R1$+TEMP$(Z): NEXT: FOR Z=9 TO NF: R2$=R2$+TEMP$(Z): NEXT 5176 REM CHECK INDICES 5177 : 5180 P1=0: P2=0: P3=0: P4=0 5190 IF KK$(1)<>TEMP$(1) THEN GOSUB 5400: P1=1 5200 IF KK$(2)<>TEMP$(2) THEN GOSUB 5450: P2=1 5210 IF KK$(NF)<>TEMP$(NF) THEN GOSUB 5500: P3=1 5220 P4=P1+P2+P3 5230 GOSUB 21000: REM *** REWRITE RECORD *** 5240 IF ER>0 THEN GOTO 5300: REM *** BAD FILE *** 5250 IF P4>0 THEN GOSUB 1000: GOSUB 500: REM *** INDEX CHANGED-RESAVE *** 5300 GOTO5000 5400 : 5402 REM IA$ INDEX CHANGED 5410 FORZ=1TONR:IFMID$(IA$(Z),21)<>MID$(STR$(CR),2)THENGOTO5430 5420 IA$(Z)=TEMP$(1)+MID$(STR$(CR),2): Z=NR 5430 NEXT:RETURN 5440 : 5450 FORZ=1TONR:IFMID$(IB$(Z),21)<>MID$(STR$(CR),2)THENGOTO5470 5460 IB$(Z)=TEMP$(2)+MID$(STR$(CR),2): Z=NR 5470 NEXT:RETURN 5480 : 5500 FORZ=1TONR:IFMID$(IC$(Z),4)<>MID$(STR$(CR),2)THENGOTO5520 5510 IC$(Z)=TEMP$(10)+MID$(STR$(CR),2): Z=NR 5520 NEXT:RETURN 5900 : 5910 PRINT"[147][159] EDIT RECORD "; 5915 IF CR THEN PRINT"#"CR"[157] FOR OK ": GOTO 5930 5920 PRINT: PRINT 5930 RETURN 6000 REM ********* 6002 REM DISPLAY INDEX 6004 REM ********* 6010 PG=0:X$="TITLE":T$="TITLE RECORD #":GOSUB6500:GOSUB2600 6020 W=1: PRINT"[158]";: FOR I=1TONR 6025 PRINT LEFT$(IA$(I),20)" "MID$(IA$(I),21): GOSUB 6600 6030 NEXT: PG=0: X$="STAR": T$="NAME RECORD #" 6035 GOSUB 6610: GOSUB 2600 6040 W=1: PRINT"[158]";: FORI=1TONR 6045 PRINT IB$(I): GOSUB 6600 6050 NEXT: PG=0: X$="TAPE #" 6055 T$="TAPE # RECORD #": GOSUB 6610: GOSUB 2600 6060 W=1: PRINT"[158]";: FOR I=1TONR 6065 PRINT LEFT$(IC$(I),3) TAB(20) MID$(IC$(I),4): GOSUB 6600 6070 NEXT 6080 GOSUB 3070: RETURN 6500 PG=PG+1: PRINT "[147][158] INDEX.....BY "X$: PRINTTAB(30) "[145]PAGE "PG: RETURN 6600 IFI/15<>INT(I/15)THENGOTO6630 6610 IFMO=1THENGOSUB3070:GOTO6630 6620 GOSUB3070:GOSUB6500 6630 IFW=1THENPRINT"[155]";:W=0:GOTO6650 6640 IFW=0THENPRINT"[158]";:W=1 6650 IFI/15=INT(I/15)THENGOSUB2600 6660 RETURN 6996 REM *************** 6997 REM PRINTER OPTIONS 6998 REM *************** 7000 GOSUB 8600: REM *** CLEAR TEXT AREAS *** 7005 X=6: GOSUB 180 7010 PRINT" PRINT OPTIONS [150]": PRINT 7015 PRINT" TAPE L[150]ABEL": PRINT 7020 PRINT" LISTING BY:" 7025 PRINT" MOVIE T[150]ITLE" 7030 PRINT" S[150]TAR" 7040 PRINT" TAPE N[150]UMBER" 7050 PRINT: PRINT" M[150]AIN MENU" 7060 GETP$: IF P$="" THEN 7060 7080 IF P$="M" THEN GOSUB 8600: RETURN 7082 IF P$="L" THEN GOSUB 7100: GOTO 7095 7084 IF (P$="T") OR (P$="S") OR (P$="N") THEN GOSUB 7600: GOTO 7095 7090 GOTO7060 7095 IF DE<>4 THEN GOSUB 8000: RETURN 7096 GOSUB 185: PRINT"[155] PRESS ANY KEY TO CONTINUE " 7097 GOSUB 3080: PRINT "[147]": GOSUB 8000: RETURN 7100 X=21: GOSUB 180 7105 PRINT"[153] ENTER THE TAPE NUMBER " 7110 PRINT" YOU WANT TO PRINT A LABEL FOR " 7120 FOR I=1 TO 4: FO$(I)="": NEXT 7130 EX=0: K=1: PRINT"[153] ";: GOSUB 9500 7135 IF EX=1 THEN GOSUB 8000: RETURN 7140 CR$=T$: CR=VAL(CR$): J=0 7150 DE=4: SC$="": RV$=CHR$(14): C1$="": C2$="" 7160 IF DE=3 THEN SC$=CHR$(147): RV$=CHR$(18): C1$=CHR$(5): C2$=CHR$(152) 7200 FOR I=1 TO NR: A=VAL(LEFT$(IC$(I),3)): B$=MID$(IC$(I),4) 7220 IF A=CR THEN J=J+1: FO$(J)=B$: A$=LEFT$(IC$(I),3) 7240 NEXT: IF J<>0 THEN GOTO 7255 7245 PRINT: PRINT"[145][145][153] " 7250 PRINT: PRINT"[145][153] [150] FILE NOT FOUND [153] ": GOTO 7520 7255 X=20: GOSUB 180 7256 FOR X=1TO4: PRINT"[153] ": NEXT 7260 PRINT"[145][145][145][153] IS PRINTER READY? < Y/N > " 7262 GET K$: IF (K$<>"Y") AND (K$<>"N") THEN 7262 7264 IF K$="N" THEN RETURN 7265 IFJ>4THENJ=4 7270 OPEN4,DE: IF (ST AND 128) THEN GOSUB 9700: GOSUB 8000: RETURN 7275 IF DE=4 THEN PRINT#4,CHR$(27);"[194]";CHR$(3); 7300 P=0:FORI=1TOJ:RC=VAL(FO$(I)): GOSUB22000:P=P+1:RC$(P)=R1$+R2$:NEXT 7304 REM FIELDS 1,4,5,6,7 - TITLE,START,END,SPEED,TIME 7310 FORI=1TOJSTEP4:X$=" ": PRINT#4,MID$(RC$(1),S(1),L(1)); 7320 IFJ>1THENPRINT#4,X$;MID$(RC$(2),S(1),L(1)); 7330 IFJ>2THENPRINT#4,X$;MID$(RC$(3),S(1),L(1)); 7340 IFJ>3THENPRINT#4,X$;MID$(RC$(4),S(1),L(1)); 7350 PRINT#4 7410 FORK=4TO7:X$=LEFT$(SP$,21-L(K)) 7420 PRINT#4,MID$(RC$(1),S(K),L(K)); 7430 IFJ>1THENPRINT#4,X$;MID$(RC$(2),S(K),L(K)); 7440 IFJ>2THENPRINT#4,X$;MID$(RC$(3),S(K),L(K)); 7450 IFJ>3THENPRINT#4,X$;MID$(RC$(4),S(K),L(K)); 7455 IFK>6THENPRINT#4,RV$;" # :";A$ 7460 PRINT#4:NEXT 7470 NEXT:GOSUB185 7480 PRINT"[153] ANOTHER COPY OF SAME LABEL " 7485 PRINT" < Y/N >[157][157][157][157][157][157][157]"; 7490 GET K$: IF (K$<>"Y") AND (K$<>"N") THEN 7490 7495 : PRINT" ": IF K$="Y" THEN 7310 7500 IFDE=4THENPRINT#4,CHR$(27);"[194]";CHR$(1); 7510 PRINT#4,CHR$(0);:CLOSE4 7520 RETURN 7596 REM ********************** 7597 REM LISTS AND LIST DEVICES 7598 REM ********************** 7599 : 7600 X=21: GOSUB 180 7602 PRINT"[153] " 7604 PRINT" " 7605 PRINT"[145][145]S[153]CREEN OR P[153]RINTER" 7606 GET K$: IF (K$<>"S") AND (K$<>"P") THEN 7606 7608 DE=4: IF K$="S" THEN DE=3 7610 SC$=CHR$(12): C1$="": C2$="" 7615 IFDE=3THENSC$=CHR$(147):C1$="[155]": C2$="[158]" 7620 OPEN 4,DE: IF (ST AND 128) THEN GOSUB 9700: RETURN 7625 PRINT#4,SC$ 7630 PA=0: GOSUB 7900: FORI=1TONR 7635 GET K$: IF K$="Q" THEN I=NR: GOTO7750: REM *** INTERRUPT & ABORT *** 7640 IF P$="T" THEN X$=IA$(I): X=21 7650 IF P$="S" THEN X$=IB$(I): X=21 7660 IF P$="N" THEN X$=IC$(I): X=4 7670 X$=MID$(X$,X): X=VAL(X$): RC=X: GOSUB 22000: RC$=R1$+R2$ 7672 IF ER<>0 THEN I=NR: GOTO 7740 7677 PRINT#4,I;: IF I<10 THEN PRINT#4," "; 7678 IF I<100 THEN PRINT#4," "; 7679 PRINT#4," "; 7680 PRINT#4,MID$(RC$,S(1),L(1));" "; 7690 PRINT#4,MID$(RC$,S(2),L(2));" "; 7700 FORK=4TO9 7710 PRINT#4,MID$(RC$,S(K),L(K));" "; 7720 NEXT:PRINT#4," ";MID$(RC$,S(10),L(10)) 7725 LN=LN+1 7730 IF LN>58 THEN FOR BZ=1TO3: PRINT#4,CHR$(7);: GOSUB 370: NEXT 7735 IF LN>58 THEN GOSUB 3070: PRINT#4,SC$: GOSUB7900 7740 NEXT 7750 IF DE=4 THEN PRINT#4,SC$ 7760 CLOSE 4: IF DE=4 THEN RETURN 7765 PRINT"[158] PRESS SPACE BAR TO CONTINUE" 7770 GET K$: IF K$<>CHR$(32) THEN 7770 7780 RETURN 7900 : 7901 PA=PA+1:PRINT#4,C1$;"VIDEO TAPE LIST BY: ";C2$; 7902 IFP$="T"THENPRINT#4,"MOVIE TITLE"; 7903 IFP$="S"THENPRINT#4,"STAR NAME "; 7904 IFP$="N"THENPRINT#4,"TAPE NUMBER"; 7906 IF DE=4 THEN PRINT#4,SPC(6); 7908 PRINT#4,SPC(30);C1$;"PAGE:";PA;CHR$(13): REM *** PAGE HEADER *** 7910 PRINT#4,SPC(8);"TITLE"; 7915 PRINT#4,SPC(15);"STAR"; 7920 PRINT#4,SPC(13);"START END SP TIME YEAR TYPE TAPE #" 7925 IFDE=4THENPRINT#4,SPC(4); 7930 LI$=LP$:IFDE=3THENLI$=LS$: REM *** DEFAULT IS FOR PRINTER *** 7940 PRINT#4,LI$;LI$;:LN=3 7950 IFDE=4THENPRINT#4,LI$;LI$ 7960 PRINT#4,C2$:LN=LN+1:RETURN 7997 : 7998 REM *** SCREEN DISPLAY *** 7999 : 8000 PRINT"[147][176][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][174]" 8110 PRINT"[221][159] [219] [219] [219] [219] [219]  [159] [219] [219] [219] [219] [219] [146][221]" 8120 PRINT"[221][159] [219][219][219][219][219][219][219][219][219][219] VIDEO PHILE [159][219][219][219][219][219][219][219][219][219][219] [146][221]" 8140 PRINT"[221][159] [219] [219] [219] [219] [219]  [159] [219] [219] [219] [219] [219] [146][221]" 8150 PRINT"[171][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][178][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][179]" 8200 SS$="[221][150] [146][221]"+CHR$(158)+" [146][221]" 8220 FOR X=1TO14: PRINTSS$: NEXT 8230 PRINT"[171][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][177][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][179]" 8240 SS$="[221][153] [146][221]" 8250 PRINTSS$: PRINTSS$: PRINTSS$: PRINTSS$ 8260 PRINT"[173][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][189]"; 8280 PRINT"[145][145][145][145]"; 8282 PRINT"[153](C)1986 BY MICHAEL REICH" 8285 PRINT"[153]PUBLISHED BY SOFTDISK PUBLISHING,INC." 8290 GOSUB 940 8300 RETURN 8496 REM *************** 8497 REM PRINT CASSETTE 8498 REM *************** 8499 : 8500 PRINT""D$ 8505 GOSUB 190: PRINT"[158][169] " 8510 GOSUB 190: PRINTR$"[155][176][192][192][192][192][192][192][192][192][192][174][146] " 8515 GOSUB 190: PRINTR$"[194][213][192][192][201] [213][192][192][201][194][146] " 8520 GOSUB 190: PRINTR$"[221][221]()[221] [221]()[221][221][146] " 8530 GOSUB 190: PRINTR$"[221][202][192][192][203] [202][192][192][203][221][146] " 8540 GOSUB 190: PRINTR$"[221]"N$"[221][146] " 8550 GOSUB 190: PRINTR$"[173]=========[189][158][169]" 8560 RETURN 8596 REM *************** 8597 REM CLEAR TEXT AREA 8598 REM *************** 8599 : 8600 X=6: GOSUB 180 8610 FOR X=1 TO 13 8620 PRINT"[150] " 8630 NEXT 8640 RETURN 8996 REM ************ 8997 REM GET KEYPRESS 8998 REM ************ 8999 : 9000 T$="": CT=0 9010 GET K$: IF K$="" THEN 9010 9015 K=ASC(K$) 9020 IF K=44 THEN 9010: REM *** COMMA *** 9025 IF K=13 THEN 9200: REM *** *** 9030 IF K<>20 THEN 9100: REM *** OTHER THAN DELETE *** 9040 IF CT=0 THEN 9010 9050 PRINT"[157] [157]";: CT=CT-1: T$=LEFT$(T$,CT) 9060 GOTO 9010 9100 IF CT=20 THEN 9010 9110 IF ((K>31) AND (K<96)) OR ((K>192) AND (K<219)) THEN 9130 9120 GOTO 9010 9130 PRINTK$;: CT=CT+1: T$=T$+K$: GOTO 9010 9200 PRINT: RETURN 9496 REM ******************** 9497 REM INPUT REC # FROM KBD 9498 REM ******************** 9499 : 9500 CT=0: T$="" 9510 GET K$: IF K$="" THEN 9510 9520 IF K$=CHR$(13) THEN 9600 9530 IF K$<>CHR$(20) THEN 9560 9540 IF CT=0 THEN 9510 9550 PRINT"[157] [157]";: CT=CT-1: T$=LEFT$(T$,CT): GOTO 9510 9560 IF (CT=3) THEN 9510 9570 IF (K$CHR$(57)) THEN 9510 9580 IF K=0 THEN K=1: PRINT" [157][157][157][157][157][157][157][157][157][157]"; 9590 PRINTK$;: CT=CT+1: T$=T$+K$: GOTO 9510 9600 IF CT=0 THEN EX=1: RETURN 9610 IF (VAL(T$)<=NR) AND (VAL(T$)<>0) THEN RETURN 9620 PRINTLEFT$("[157][157][157]",CT)+LEFT$(" ",CT)+LEFT$("[157][157][157]",CT);: GOTO 9500 9700 X=20: GOSUB 180 9710 FOR X=1TO4: PRINT"[153] ": NEXT 9720 PRINT"[145][145][145][153]  [150] PRINTER NOT READY  [153] " 9730 PRINT" PRESS SPACE BAR TO CONTINUE " 9740 GET K$: IF K$<>CHR$(32) THEN 9740 9750 RETURN 9800 X=6: GOSUB 180 9805 PRINT"[150] VIDEO TAPE" 9810 PRINT" CATALOGING" 9815 PRINT" SYSTEM" 9820 PRINT"[150] 1[150]- RUN IT" 9825 PRINT"[150] 2[150]- READ ABOUT IT" 9830 GET K$: IF (K$<>"1") AND (K$<>"2") THEN 9830 9835 IF K$="2" THEN GOSUB 10000: GOSUB 8000: GOTO 9850 9840 X=6: GOSUB 180 9845 FOR X=1TO11: PRINT"[150] ": NEXT 9850 RETURN 10000 PRINT"[147]" 10010 PRINTSPC(14)"[155]VIDEO PHILE" 10020 PRINTSPC(11)"BY MICHAEL REICH" 10025 PRINT" VIDEO PHILE IS A DATABASE LIBRARY" 10026 PRINT"USED TO KEEP TRACK OF A VIDEO TAPE COL- LECTION, USING RELATIVE "; 10027 PRINT"FILES AND A SE- QUENTIAL FILE INDEX. IT WILL PROVIDE" 10028 PRINT"PRINTED LABELS FOR THE VIDEO TAPES AS WELL AS A LISTING OF YOUR "; 10029 PRINT"COLLECTION SORTED SEVERAL WAYS TO PROVIDE EASY LOCATION OF"; 10030 PRINT" YOUR TAPES." 10035 GOSUB 11000 10040 PRINT"[147] EACH VIDEO PHILE RECORD CONTAINS" 10041 PRINT"10 FIELDS OF INFORMATION:" 10042 PRINT" 1) MOVIE TITLE 10043 [153]" 2) STAR NAME 10044 PRINT" 3) CO-STAR NAME 10045 [153]" 4) VCR COUNTER- START 10046 PRINT" 5) VCR COUNTER- STOP 10047 [153]" 6) VCR RUNNING SPEED 10048 PRINT" 7) RUNNING TIME- MINS 10049 [153]" 8) YEAR (EX. 1987) 10050 PRINT" 9) TYPE (COLOR OR B&W) 10051 [153]" 10) TAPE NUMBER 10052 PRINT" THE TITLE, STAR, AND TAPE NUMBER" 10053 PRINT"ARE THE FIELDS WHICH MAKE UP THE IN-" 10054 PRINT"DICES." 10055 GOSUB 11000 10060 PRINT"[147] THE FIRST THING THAT NEEDS TO BE" 10061 PRINT"DONE IS TO CREATE THE RELATIVE FILE" 10062 PRINT"WITH THE CREATE OPTION IN THE MENU." 10063 PRINT"OF COURSE, THAT'S PROVIDED IT HASN'T" 10064 PRINT"BEEN DONE ALREADY" 10065 PRINT" WHILE 'CREATE' IS ONLY USED ONCE" 10066 PRINT"TO CREATE THE RELATIVE FILE, AN INDEX" 10067 PRINT"FILE IS CONSTANTLY BEING MODIFIED AND" 10068 PRINT"READ TO KEEP TRACK OF THE DATA IN THE" 10069 PRINT"MAIN VIDEO FILE. THIS FILE IS READ" 10070 PRINT"WHEN THE PROGRAM IS FIRST RUN AND SE-" 10071 PRINT"VERAL TIMES THEREAFTER." 10075 GOSUB 11000 10080 PRINT"[147] THIS INDEX FILE, A SEQ FILE, " 10081 PRINT"CONTAINS SORTED LISTS OF THE TITLES," 10082 PRINT"STARS, AND TAPE NUMBERS, OF THE TAPES" 10083 PRINT"YOU'VE ENTERED INTO THE DATABASE." 10084 PRINT"THESE LISTS ARE SORTED ON THE FIRST" 10085 PRINT"CHARACTER OF EACH FIELD AS THEY WERE" 10086 PRINT"ENTERED, EXCEPT THE TAPE NUMBER INDEX," 10087 PRINT"WHICH IS SORTED NUMERICALLY." 10088 PRINT" THIS FILE IS UPDATED ON EVERY MOD-" 10089 PRINT"IFICATION TO THE MAIN VIDEO FILE." 10090 GOSUB 11000 10100 PRINT"[147] VIDEO PHILE IS A MENU DRIVEN" 10110 PRINT"PROGRAM WITH PROMPTS, SO THERE IS NO" 10120 PRINT"GUESS WORK INVOLVED. SIMLY FOLLOW THE" 10130 PRINT"PROMPTS AS THEY ARE GIVEN AND BEFORE" 10140 PRINT"LONG, YOUR ENTIRE VIDEO LIBRARY WILL" 10150 PRINT"BE NICELY AND NEATLY CATALOGED." 10160 PRINT" HAVE FUN!" 10170 GOSUB 11000 10180 RETURN 11000 X=23: GOSUB 180 11010 PRINT" PRESS TO CONTINUE" 11020 GETK$: IF K$<>CHR$(13) THEN 11020 11030 RETURN 19996 REM ********************** 19997 REM CREATE A RELATIVE FILE 19998 REM ********************** 19999 : 20000 X=21: GOSUB 180 20010 PRINT"[153] " 20020 PRINT"[145] STANDBYE...CREATING RELATIVE FILE" 20030 A2=N: REM *** # OF RECORDS +1 *** 20040 A1=88: REM *** RECORD LENGTH +2 *** 20050 HB=INT(A2/256): LB=A2-(HB*256) 20060 CLOSE15: OPEN15,8,15,"I0" 20062 PRINT#15,"S0:VIDEO PHILE DATA" 20065 PRINT#15,"S0:VIDEO.INDEX ": NR=0 20070 OPEN1,8,2,"VIDEO PHILE DATA,L,"+CHR$(A1) 20080 PRINT#15,"P"+CHR$(2+96)+CHR$(LB)+CHR$(HB)+CHR$(1) 20090 PRINT#1,"END" 20100 INPUT#15,ER,ER$,ET,ES 20110 CLOSE 1: CLOSE 15: IF ER=50 THEN GOTO 20160 20120 X=21: GOSUB 180 20130 PRINT"[153] " 20135 SP=INT((40-LEN(ER$))/2) 20140 PRINT"[145]"SPC(SP-1)""ER$ 20150 FOR X=1TO 1750: NEXT 20160 GOSUB 8000: RETURN 21000 REM ********* 21002 REM WRITE RECORD TO REL.FILE 21004 REM ********* 21010 CLOSE15:CLOSE1:GOSUB470 21020 OPEN1,8,2,"VIDEO PHILE DATA,L" 21030 HB=INT(CR/256):LB=CR-(HB*256) 21040 PRINT#15,"P"+CHR$(2+96)+CHR$(LB)+CHR$(HB)+CHR$(1) 21050 PRINT#1,R1$;CHR$(13);R2$:CLOSE1:GOSUB410:CLOSE15:IFER=0THENGOTO21080 21060 GOSUB22200:GOSUB180:PRINT"[152]PRESS RETURN "; 21070 INPUT"TO ATTEMPT SAVE [214][157][157][157]";KEY$:GOSUB22300:GOTO21000 21080 IFER=0THENGOSUB185:PRINT"RECORD "CR" WRITTEN":IN=75:GOSUB380 21090 RETURN 22000 REM ********* 22002 REM READ RECORD FROM REL.FILE 22004 REM ********* 22010 GOSUB470:R1$="":R2$="" 22020 OPEN1,8,2,"VIDEO PHILE DATA" 22030 HB=INT(RC/256):LB=RC-(HB*256) 22040 PRINT#15,"P"+CHR$(2+96)+CHR$(LB)+CHR$(HB)+CHR$(1) 22050 INPUT#1,R1$,R2$:CLOSE1:GOSUB410: CLOSE15:IFER=0THENRETURN 22070 GOSUB22200:X=2:GOSUB180: RETURN 22100 : 22150 Q=ABS(1-Q):GOSUB185 22155 IFQ=0THENPRINT""; 22160 IFQ=1THENPRINT"[146]";: IF DE=4 THEN PRINT"[153]"; 22170 PRINT" DATA FILE MISSING - CHECK DISK!!! " 22180 IN=25:GOSUB380:RETURN 22200 : 22210 IFER=70THENFORG=1TO15:X=22: GOSUB22150:NEXT:GOSUB22300 22220 IFER<>70THENPRINT"DISK STATUS:"ER$ 22230 RETURN 22300 GOSUB 185: IF DE=4 THEN PRINT"[153]"; 22400 PRINT SP$: RETURN 55000 REM ********* 55002 REM QUICK SORT ROUTINE 55004 REM ********* 55020 FORT=1TONR:M%(T)=2*T:NEXT: REM ARRAY TO SORT IS IN Q1$ 55040 S%(1)=1:S%(2)=NR:P=2 55060 L=S%(P):P=P-1:F=S%(P):P=P-1:I=F 55080 J=L:D$=Q1$((F+L)/2) 55100 GOSUB55300:IFQ1$(I)D$THENJ=J-1: GOTO55120 55140 IFI<=JTHENQ2$=Q1$(I):Q1$(I)=Q1$(J) :Q1$(J)=Q2$:I=I+1:J=J-1 55160 GOSUB55300:IFI<=JTHENGOTO55100 55180 IFF0THENGOTO55060 55230 RETURN 55240 : 55300 ONSOGOSUB1770,1780:REM SHOW TIME 55310 RETURN